#include<iostream>
#include<cstring>
using namespace std;
const int maxn = 50005;
int n,num[maxn];

bool heap_adjust(int x){
	while(x*2<=n){
		int j=x*2;
		if(x*2+1<=n && num[x*2+1]>num[x*2])j++;
		if(num[j]<num[x]){
			return false;
		}else break;
	}
	return true;
}

int main(){
	cin>>n;
	for(int i=1;i<=n;i++)cin>>num[i];
	for(int i=2;i<=n;i++){
		if(num[1]>num[i]){
			cout<<"NO"<<endl;
			return 0;
		}
	}
	for(int i=1;i<=n;i++){
		if(!heap_adjust(i)){
			cout<<"NO"<<endl;
			return 0;
		}
	}
	cout<<"YES"<<endl;
	return 0;
}
